// utils/request.js
const BASE_URL = 'http://172.16.0.30:8088'; // 替换为你的接口域名

// 基础请求函数（核心逻辑）
function baseRequest(method, url, data = {}) {
  return new Promise((resolve, reject) => {
    // 1. 检查 token 是否存在（从本地缓存获取）
    const token = wx.getStorageSync('token');
    
    // 2. 拼接完整 URL
    const fullUrl = `${BASE_URL}${url}`;
    
    // 3. 配置请求头（默认 JSON 格式，存在 token 则携带）
    const header = {
      'Content-Type': 'application/json',
      ...(token ? { Authorization: `Bearer ${token}` } : {}) // 存在 token 则添加
    };

    // 4. 发送请求（微信原生 API）
    wx.request({
      url: fullUrl,
      method: method,
      data: data, // GET/POST/PUT 参数均通过 data 传递（微信自动处理 GET 为查询参数）
      header: header,
      timeout: 10000, // 超时时间 10s
      success: (res) => {
        // 直接返回服务端响应数据（可根据需求调整，如判断业务状态码）
        resolve(res.data);
      },
      fail: (err) => {
        // 网络错误提示（如无网络、超时）
        wx.showToast({ title: '网络请求失败', icon: 'error' });
        reject(err);
      }
    });
  });
}

// 封装 GET 方法（参数自动拼接在 URL 后）
function get(url, params = {}) {
  return baseRequest('GET', url, params);
}

// 封装 POST 方法（参数自动转为 JSON 放请求体）
function post(url, data = {}) {
  return baseRequest('POST', url, data);
}

// 封装 PUT 方法（参数自动转为 JSON 放请求体）
function put(url, data = {}) {
  return baseRequest('PUT', url, data);
}

// 导出方法供外部使用
module.exports = {
  get,
  post,
  put
};